package com.szrt.day20161027.zhongjijia.stduent.dao.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import com.szrt.day20161027.zhongjijia.base.dao.impl.BaseDaoImpl;
import com.szrt.day20161027.zhongjijia.stduent.dao.StudentDao;
import com.szrt.day20161027.zhongjijia.stduent.entity.StudentEntity;
import com.szrt.day20161027.zhongjijia.utils.JDBCUtil;

public class StudentDaoImpl extends BaseDaoImpl<StudentEntity> implements StudentDao{

	
	
	@Override
	public int add(StudentEntity entity) throws Exception {
		
		
		//1 获得连接
		Connection connection = getConnection();
		 
		String sql ="insert into oa_student_t(ID,STUDENT_AGE,STUDENT_NAME) values(?,?,?)";
		System.out.println(sql);
		
		//之所以不用 Statement 是因为SQL注入的原因。Statement的子类PreparedStatement可以处理SQL注入的问题
		PreparedStatement ps =connection.prepareStatement(sql);
		int id = entity.getId();
		int studentAge = entity.getStudentAge();
		String studentName = entity.getStudentName();
		
		//设置?里面的值
		ps.setInt(1, id);
		ps.setInt(2, studentAge);
		ps.setString(3, studentName);
		
		
		
		//3 返回的影响的记录的条数
		int counter = ps.executeUpdate();
		System.out.println(counter);
		System.out.println("操作成功....");
		// 知识点： 关闭时有顺序的? 先开后关   举例： 来 先开门 再开电脑  走  先关电脑  再关门
		JDBCUtil.closeStatementAndConnection(ps, connection);
		return counter;
	}

	@Override
	public int delete(int id) throws Exception {
		
		//1 获得连接
		Connection connection = getConnection();
		//2 得到删除的语句 executeUpdate  新手最容易犯错的地方：mysql 后面的分号一定不能要
		
		
		
		// 1 先删除   2 写2个双引号  3 写2个+ 
		String sql ="delete from oa_student_t where ID=?";
		
		
		
		//所有的SQL都需要预编译(就是让or失效)
		//PreparedStatement 让or失效 把or放到''里面去
		PreparedStatement ps = connection.prepareStatement(sql);
		//设置?的值
		
		//?的下标从1开始
		ps.setInt(1, id);
		
		
		System.out.println(sql);
		
		//3 返回的影响的记录的条数
		int counter = ps.executeUpdate();
		System.out.println("操作成功....");
		System.out.println(counter);
		// 知识点： 关闭时有顺序的? 先开后关   举例： 来 先开门 再开电脑  走  先关电脑  再关门
		JDBCUtil.closeStatementAndConnection(ps, connection);
		return counter;
	}

}
